package pe.com.bbva.ge.vista.vaadin.ui;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

import pe.com.bbva.ge.domain.configuracion.Lista;
import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.negocio.ConfiguracionNegocio;
import pe.com.bbva.ge.utileria.Constante;

import com.cdainfo.vaadin.TablaFiltro;
import com.cdainfo.vaadin.container.CDAIndexedContainer;
import com.cdainfo.vaadin.event.TablaFiltroEnterEvent;
import com.cdainfo.vaadin.listener.TablaFiltroEnterListener;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.event.FieldEvents.TextChangeListener;
import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.ui.AbstractTextField.TextChangeEventMode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

@SuppressWarnings("serial")
public class ListasYValoresUI extends VentanaUI implements  ClickListener, TablaFiltroEnterListener{

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private HorizontalLayout pnlValorContenido;
	@AutoGenerated
	private VerticalLayout pnlGrabarValor;
	@AutoGenerated
	private HorizontalLayout pnlValorFila5;
	@AutoGenerated
	private Button btnEliminarValor;
	@AutoGenerated
	private Button btnGrabarValor;
	@AutoGenerated
	private HorizontalLayout pnlValorFila4;
	@AutoGenerated
	private TextField txtDescripcionValor;
	@AutoGenerated
	private HorizontalLayout pnlValorFila3;
	@AutoGenerated
	private TextField txtOrdenValor;
	@AutoGenerated
	private TextField txtNombreValor;
	@AutoGenerated
	private HorizontalLayout pnlValorFila2;
	@AutoGenerated
	private TextField txtIdValor;
	@AutoGenerated
	private ComboBox cboEstadoValor;
	@AutoGenerated
	private TextField txtCodigoValor;
	@AutoGenerated
	private HorizontalLayout pnlValorFila1;
	@AutoGenerated
	private ComboBox cboLista;
	@AutoGenerated
	private Label lblGrabarValor;
	@AutoGenerated
	private Panel panel_2;
	@AutoGenerated
	private VerticalLayout verticalLayout_3;
	@AutoGenerated
	private VerticalLayout pnlValores;
	@AutoGenerated
	private TablaFiltro tblValores;
	@AutoGenerated
	private Label lblValores;
	@AutoGenerated
	private HorizontalLayout pnlListaContenido;
	@AutoGenerated
	private VerticalLayout pnlGrabarLista;
	@AutoGenerated
	private HorizontalLayout pnlListaFila4;
	@AutoGenerated
	private Button btnEliminarLista;
	@AutoGenerated
	private Button btnGrabarLista;
	@AutoGenerated
	private VerticalLayout pnlListaFila3;
	@AutoGenerated
	private TextField txtDescripcionLista;
	@AutoGenerated
	private VerticalLayout pnlListaFila2;
	@AutoGenerated
	private TextField txtNombreLista;
	@AutoGenerated
	private HorizontalLayout pnlListaFila1;
	@AutoGenerated
	private TextField txtIdLista;
	@AutoGenerated
	private ComboBox cbmEstadoLista;
	@AutoGenerated
	private TextField txtCodigoLista;
	@AutoGenerated
	private Label lblGrabarLista;
	@AutoGenerated
	private Panel panel_1;
	@AutoGenerated
	private VerticalLayout verticalLayout_2;
	@AutoGenerated
	private VerticalLayout pnlListas;
	@AutoGenerated
	private TablaFiltro tblListas;
	@AutoGenerated
	private Label lblListas;
	@Autowired
	private ConfiguracionNegocio genericoNegocio;
	private CDAIndexedContainer containerListas;
	private CDAIndexedContainer containerValores;
	Window modalEliminar;
	
	public static final String NOMBRE			="nombre";
	public static final String CODIGO			="codigo";
	public static final String DESCRIPCION		="descripcion";
	public static final String ESTADO			="estado";
	public static final String ORDEN			="orden";
	public static final String LISTA_CODIGO		="lista.codigo";
	public static final String LISTA_ID			="lista.id";
	
	public ListasYValoresUI() {
		buildMainLayout();
		setCompositionRoot(mainLayout);
		
		//debugId();
	}
	
	private void debugId(){
		/*mainLayout.setDebugId("mainLayout");
		pnlValorContenido.setDebugId("pnlValorContenido");
		pnlGrabarValor.setDebugId("pnlGrabarValor");
		pnlValorFila5.setDebugId("pnlValorFila5");
		btnEliminarValor.setDebugId("btnEliminarValor");
		btnGrabarValor.setDebugId("btnGrabarValor");
		pnlValorFila4.setDebugId("pnlValorFila4");
		txtDescripcionValor.setDebugId("txtDescripcionValor");
		pnlValorFila3.setDebugId("pnlValorFila3");
		txtOrdenValor.setDebugId("txtOrdenValor");
		txtNombreValor.setDebugId("txtNombreValor");
		pnlValorFila2.setDebugId("pnlValorFila2");
		cboEstadoValor.setDebugId("cboEstadoValor");
		txtCodigoValor.setDebugId("txtCodigoValor");
		lblIdValor.setDebugId("lblIdValor");
		pnlValorFila1.setDebugId("pnlValorFila1");
		cboLista.setDebugId("cboLista");
		lblGrabarValor.setDebugId("lblGrabarValor");
		pnlValores.setDebugId("pnlValores");
		tblValores.setDebugId("tblValores");
		pnlFiltroValores.setDebugId("pnlFiltroValores");
		txtFiltroEstadoValor.setDebugId("txtFiltroEstadoValor");
		txtFiltroNombreValor.setDebugId("txtFiltroNombreValor");
		txtFiltroCodigoValor.setDebugId("txtFiltroCodigoValor");
		txtFiltroOrdenValor.setDebugId("txtFiltroOrdenValor");
		txtFiltroIdValor.setDebugId("txtFiltroIdValor");
		lblValores.setDebugId("lblValores");
		pnlListaContenido.setDebugId("pnlListaContenido");
		pnlGrabarLista.setDebugId("pnlGrabarLista");
		pnlListaFila4.setDebugId("pnlListaFila4");
		btnEliminarLista.setDebugId("btnEliminarLista");
		btnGrabarLista.setDebugId("btnGrabarLista");
		pnlListaFila3.setDebugId("pnlListaFila3");
		txtDescirpcionLista.setDebugId("txtDescirpcionLista");
		pnlListaFila2.setDebugId("pnlListaFila2");
		txtNombreLista.setDebugId("txtNombreLista");
		pnlListaFila1.setDebugId("pnlListaFila1");
		cbmEstadoLista.setDebugId("cbmEstadoLista");
		txtCodigoLista.setDebugId("txtCodigoLista");
		lblIdLista.setDebugId("lblIdLista");
		lblGrabarLista.setDebugId("lblGrabarLista");
		pnlListas.setDebugId("pnlListas");
		tblListas.setDebugId("tblListas");
		pnlFiltrosListas.setDebugId("pnlFiltrosListas");
		txtFiltroEstadoLista.setDebugId("txtFiltroEstadoLista");
		txtFiltroNombreLista.setDebugId("txtFiltroNombreLista");
		txtFiltroCodigoLista.setDebugId("txtFiltroCodigoLista");
		txtFiltroIdLista.setDebugId("txtFiltroIdLista");
		lblListas.setDebugId("lblListas");*/
	}
	
	public void postConstruccion() {
		txtDescripcionLista.setNullRepresentation("");
		txtOrdenValor.setNullRepresentation("");
		txtDescripcionValor.setNullRepresentation("");
		txtOrdenValor.setTextChangeEventMode(TextChangeEventMode.EAGER);
		txtOrdenValor.addListener(new TextChangeListener() {
			private static final long serialVersionUID = -290756895950492262L;
			@Override
			public void textChange(TextChangeEvent event) {
				if(StringUtils.isNumeric(event.getText())){
					txtOrdenValor.setValue(event.getText());
				}else{
					txtOrdenValor.setValue(txtOrdenValor.getValue());
				}
			}
		});
		pnlValorContenido.setVisible(false);	
		
		tblListas.setSelectable(true);
		tblListas.setImmediate(true);
		tblListas.setNullSelectionAllowed(true);
		tblListas.setNullSelectionItemId(null);
		tblListas.addListener(new ValueChangeListener() {
			public void valueChange(ValueChangeEvent event) {
				if(tblListas.getValue() == null){
					limpiarListaFiltros();
					pnlValorContenido.setVisible(false);
				}else{
					tblValores.setValue(null);
					Item item = tblListas.getItem(tblListas.getValue());
					txtIdLista.setValue(item.getItemProperty("id").getValue());
					txtCodigoLista.setValue(item.getItemProperty("codigo").getValue());
					txtNombreLista.setValue(item.getItemProperty("nombre").getValue());
					txtDescripcionLista.setValue(item.getItemProperty("descripcion").getValue());
					cbmEstadoLista.select(item.getItemProperty("estado.valor").getValue());					
					Lista lista = new Lista();
					lista.setId((Long)item.getItemProperty("id").getValue());
					lista.setCodigo((String)item.getItemProperty("codigo").getValue());					
					cboLista.select(lista);					
					Valor valor = new Valor();
					valor.setLista(lista);
					List<Valor> valores = genericoNegocio.buscarValores(valor);
					cargarValores(valores);					
					btnGrabarLista.setCaption("Actualizar");					
					pnlValorContenido.setVisible(true);
				}
			}
		});
		tblValores.setSelectable(true);
		tblValores.setImmediate(true);
		tblValores.setNullSelectionAllowed(true);
		tblValores.setNullSelectionItemId(null);
		
		tblValores.addListener(new ValueChangeListener() {			
			private static final long serialVersionUID = 8766174414524651740L;
			@Override
			public void valueChange(ValueChangeEvent event) {
				if(tblValores.getValue() == null){
					limpiarValorFiltros();
				}else{					
					Item item = tblValores.getItem(tblValores.getValue());
					txtIdValor.setValue(item.getItemProperty("id").getValue());
					txtCodigoValor.setValue(item.getItemProperty("codigo").getValue());
					txtNombreValor.setValue(item.getItemProperty("nombre").getValue());
					txtOrdenValor.setValue(item.getItemProperty("orden").getValue());
					txtDescripcionValor.setValue(item.getItemProperty("descripcion").getValue());
					cboEstadoValor.select(item.getItemProperty("estado.valor").getValue());					
					Lista lista = new Lista();
					lista.setCodigo((String)item.getItemProperty("lista.codigo").getValue());
					lista.setId((Long)item.getItemProperty("lista.id").getValue());
					cboLista.select(lista);					
					btnGrabarValor.setCaption("Actualizar");
				}
			}
		});
		List<Lista> listas = genericoNegocio.buscarListas(null);		
		List<Valor> lstEstado=genericoNegocio.obtenerValores(Constante.LISTA.CODIGO.REGISTRO_ESTADO);
		BeanItemContainer<Valor> bicEstados = new BeanItemContainer<Valor>(Valor.class, lstEstado);
		BeanItemContainer<Lista> bicListas = new BeanItemContainer<Lista>(Lista.class,  listas);
		
		cbmEstadoLista.setInputPrompt("Estado");
		cbmEstadoLista.setContainerDataSource(bicEstados);
		cbmEstadoLista.setItemCaptionPropertyId("nombre");

		cboEstadoValor.setInputPrompt("Estado");
		cboEstadoValor.setContainerDataSource(bicEstados);
		cboEstadoValor.setItemCaptionPropertyId("nombre");
		
		cboLista.setInputPrompt("Lista");
		cboLista.setContainerDataSource(bicListas);
		cboLista.setItemCaptionPropertyId("nombre");
		cargarListas(listas);
		
		btnGrabarLista.addListener((ClickListener)this);
		btnGrabarLista.setCaption("Crear");
		btnEliminarLista.addListener((ClickListener)this);
		btnGrabarValor.addListener((ClickListener)this);
		btnGrabarValor.setCaption("Crear");
		btnEliminarValor.addListener((ClickListener)this);
		tblListas.addListener((TablaFiltroEnterListener)this);
		tblValores.addListener((TablaFiltroEnterListener)this);
	}
	
	private void limpiar(String nombre){
		if(nombre.equals("lista")){
			txtIdLista.setValue("");
			txtCodigoLista.setValue("");
			cbmEstadoLista.setValue(null);		
			txtNombreLista.setValue("");
			txtDescripcionLista.setValue("");
		}else if(nombre.equals("valor")){
			txtIdValor.setValue("");
			txtCodigoValor.setValue("");
			cboEstadoValor.setValue(null);		
			txtNombreValor.setValue("");
			txtDescripcionValor.setValue("");
			txtOrdenValor.setValue("");
			Item item = tblListas.getItem(tblListas.getValue());
			Lista lista = new Lista();
			lista.setId((Long)item.getItemProperty("id").getValue());
			cboLista.select(lista);
		}
	}
	
	private void cargarListas(List<Lista> listas){
		if(containerListas!=null){
			containerListas.removeAllItems();
		}else{
			containerListas = new CDAIndexedContainer();
			
			containerListas.addContainerProperty("id", Long.class, null);
			containerListas.addContainerProperty("codigo", String.class, null, "Código", CDAIndexedContainer.TipoComponente.TEXT, true, 147);
			containerListas.addContainerProperty("nombre", String.class, null, "Nombre", CDAIndexedContainer.TipoComponente.TEXT, true, 218);
			containerListas.addContainerProperty("descripcion", String.class, null, "Descripción", CDAIndexedContainer.TipoComponente.TEXT, true, 218);
			containerListas.addContainerProperty("estado", String.class, null, "Estado", CDAIndexedContainer.TipoComponente.TEXT, true, 45);
			containerListas.addContainerProperty("estado.valor", Valor.class, null);
			tblListas.setContainerDataSource(containerListas);
		}		
		int con=1;
		for (Lista lista: listas) {
			Item item = containerListas.addItem(con++);
            item.getItemProperty("id").setValue(lista.getId());
            item.getItemProperty("codigo").setValue(lista.getCodigo());
            item.getItemProperty("nombre").setValue(lista.getNombre());
            item.getItemProperty("descripcion").setValue(lista.getDescripcion());
            item.getItemProperty("estado").setValue(lista.getEstado());
            List<Valor> lstEstado=genericoNegocio.obtenerValores(Constante.LISTA.CODIGO.REGISTRO_ESTADO);
			for(Valor valorEstado:lstEstado){
				if(valorEstado.getCodigo().equals(lista.getEstado())){
					item.getItemProperty("estado.valor").setValue(valorEstado);
				}
			}
		}
	}
	
	private void cargarValores(List<Valor> valores){
		if(containerValores!=null){
			containerValores.removeAllItems();
		}else{
			containerValores = new CDAIndexedContainer();
			containerValores.addContainerProperty("id", Long.class, null);
			containerValores.addContainerProperty("codigo", String.class, null, "Código", CDAIndexedContainer.TipoComponente.TEXT, true, 147);
			containerValores.addContainerProperty("nombre", String.class, null, "Nombre", CDAIndexedContainer.TipoComponente.TEXT, true, 167);
			containerValores.addContainerProperty("orden", Integer.class, null, "Orden", CDAIndexedContainer.TipoComponente.TEXT, true, 35);
			containerValores.addContainerProperty("descripcion", String.class, null, "Descripción", CDAIndexedContainer.TipoComponente.TEXT, true, 100);
			containerValores.addContainerProperty("estado", String.class, null, "Estado", CDAIndexedContainer.TipoComponente.TEXT, true, 45);
			containerValores.addContainerProperty("lista.codigo", String.class, null, "Codigo lista", CDAIndexedContainer.TipoComponente.TEXT, true, 60);
			containerValores.addContainerProperty("lista.id", Long.class, null, "Id lista", CDAIndexedContainer.TipoComponente.TEXT, true, 45);
			containerValores.addContainerProperty("estado.valor", Valor.class, null);
			tblValores.setContainerDataSource(containerValores);
		}
		
		int con=1;
		for (Valor valor: valores) {
			Item item = containerValores.addItem(con++);
            item.getItemProperty("id").setValue(valor.getId());
            item.getItemProperty("codigo").setValue(valor.getCodigo());
            item.getItemProperty("nombre").setValue(valor.getNombre());
            item.getItemProperty("orden").setValue(valor.getOrden());
            item.getItemProperty("descripcion").setValue(valor.getDescripcion());
            item.getItemProperty("estado").setValue(valor.getEstado());
            item.getItemProperty("lista.codigo").setValue(valor.getLista().getCodigo());
            item.getItemProperty("lista.id").setValue(valor.getLista().getId());            
            List<Valor> lstEstado=genericoNegocio.obtenerValores(Constante.LISTA.CODIGO.REGISTRO_ESTADO);
            for(Valor valorEstado:lstEstado){
            	if(valorEstado.getCodigo().equals(valor.getEstado()))
            		item.getItemProperty("estado.valor").setValue(valorEstado);
            }
            
		}			
	}
	
	
	@Override
	public void buttonClick(ClickEvent event) {
		if(event.getButton().equals(btnGrabarLista))
		{
			buttonClickGrabarLista();
		}
		if(event.getButton().equals(btnEliminarLista))
		{
			buttonClickEliminarLista();
		}
		if(event.getButton().equals(btnGrabarValor))
		{
			buttonClickGrabarValor();
		}
		if(event.getButton().equals(btnEliminarValor))
		{
			buttonClickEliminarValor();
		}
	}
	
	private void buttonClickGrabarLista(){
		Lista lista = new Lista();
		if(StringUtils.isNotBlank(txtIdLista.getValue().toString())){
			lista.setId(Long.parseLong(txtIdLista.getValue().toString()));
		}
		lista.setCodigo((String)txtCodigoLista.getValue());
		lista.setNombre((String)txtNombreLista.getValue());
		lista.setDescripcion((String)txtDescripcionLista.getValue());
		Valor valorEstado=(Valor)cbmEstadoLista.getValue();
		lista.setEstado(valorEstado.getCodigo());

		if(lista.getId() > 0){
			genericoNegocio.modificar(lista);
		}
		else{
			genericoNegocio.crear(lista);
		}
		limpiarListaFiltros();
	}
	
	private void buttonClickEliminarLista(){
		Lista lista = new Lista();
		lista.setId(Long.parseLong(txtIdLista.getValue().toString()));
		if(lista!=null){
			modalEliminar(lista, "lista");
		}	
	}
	
	private void buttonClickGrabarValor(){
		Valor valor = new Valor();
		if(StringUtils.isNotBlank(txtIdValor.getValue().toString())){
			valor.setId(Long.parseLong(txtIdValor.getValue().toString()));
		}
		if(StringUtils.isNotBlank((String)txtCodigoValor.getValue())){
			valor.setCodigo(txtCodigoValor.getValue().toString().trim());
		}
		if(StringUtils.isNotBlank((String)txtNombreValor.getValue())){
			valor.setNombre(txtNombreValor.getValue().toString().trim());
		}
		if(StringUtils.isNotBlank((String)txtDescripcionValor.getValue())){
			valor.setDescripcion(txtDescripcionValor.getValue().toString().trim());
		}
		if(txtOrdenValor.getValue()!=null && !txtOrdenValor.getValue().equals("")){
		valor.setOrden(Integer.parseInt(txtOrdenValor.getValue().toString()));
		}
		Valor valorEstado=(Valor)cboEstadoValor.getValue();
		valor.setEstado(valorEstado.getCodigo());
		Lista lista = (Lista)cboLista.getValue();
		valor.setLista(lista);

		if(valor.getId() > 0){
			genericoNegocio.modificar(valor);
		}
		else{
			genericoNegocio.crear(valor);
		}		
		limpiarValorFiltros();		
	}
	
	private void buttonClickEliminarValor(){
		Valor valorEliminar = new Valor();
		valorEliminar.setId(Long.parseLong(txtIdValor.getValue().toString()));
		if(valorEliminar!=null){
			modalEliminar(valorEliminar, "valor");
		}
	}
	
	public void limpiarListaFiltros(){
		tblListas.setValue(null);			
		limpiar("lista");
		btnGrabarLista.setCaption("Crear");
		List<Lista> listas = genericoNegocio.buscarListas(null);
		cargarListas(listas);		
		BeanItemContainer<Lista> bicListas = new BeanItemContainer<Lista>(Lista.class,  listas);
		cboLista.setInputPrompt("Lista");
		cboLista.setContainerDataSource(bicListas);
		cboLista.setItemCaptionPropertyId("nombre");
	}
	
	public void limpiarValorFiltros(){
		tblValores.setValue(null);		
		limpiar("valor");
		btnGrabarLista.setCaption("Crear");
		Valor valor=new Valor();
		Item item = tblListas.getItem(tblListas.getValue());
		Lista lista = new Lista();
		lista.setId((Long)item.getItemProperty("id").getValue());
		valor.setLista(lista);
		List<Valor> valores = genericoNegocio.buscarValores(valor);
		cargarValores(valores);
	}
	
	@Override
	public void handleEnterAction(TablaFiltroEnterEvent event) {
		Map<String, Object> datosBusqueda=event.getDatos();
		if(event.getTablaFiltro().equals(tblListas)){
			buscarListas(datosBusqueda);
		}
		if(event.getTablaFiltro().equals(tblValores)){
			System.out.println("Entro XD");
			buscarValores(datosBusqueda);
		}
	}
	
	private void buscarListas(Map<String, Object> datosBusqueda) {
		Iterator<String> llaveBusqueda=datosBusqueda.keySet().iterator();
		Lista lista=new Lista(); 
		while(llaveBusqueda.hasNext()){
			String llave = llaveBusqueda.next();
			Object dato = datosBusqueda.get(llave);
			if(llave.equals(CODIGO)){
				lista.setCodigo(dato.toString());
			}else if(llave.equals(NOMBRE)){
				lista.setNombre(dato.toString());
			}else if(llave.equals(DESCRIPCION)){
				lista.setDescripcion(dato.toString());
			}else if(llave.equals(ESTADO)){
				lista.setEstado(dato.toString());
			}
		}
		limpiarListaFiltros();
		List<Lista> lstLista=genericoNegocio.buscarListas(lista);
		cargarListas(lstLista);
		pnlValorContenido.setVisible(false);
	}
	
	private void buscarValores(Map<String, Object> datosBusqueda) {
		Iterator<String> llaveBusqueda=datosBusqueda.keySet().iterator();
		Valor valor=new Valor();
		while(llaveBusqueda.hasNext()){
			String llave = llaveBusqueda.next();
			Object dato = datosBusqueda.get(llave);
			Lista lista=new Lista();
			if(llave.equals(CODIGO)){
				valor.setCodigo(dato.toString());
			}else if(llave.equals(NOMBRE)){
				valor.setNombre(dato.toString());
			}else if(llave.equals(DESCRIPCION)){
				valor.setDescripcion(dato.toString());
			}else if(llave.equals(ESTADO)){
				valor.setEstado(dato.toString());
			}else if(llave.equals(ORDEN)){
				valor.setOrden(new Integer(dato.toString()));
			}else if(llave.equals(LISTA_CODIGO)){
				lista.setCodigo(dato.toString());				
			}else if(llave.equals(LISTA_ID)){
				lista.setId(new Long(dato.toString()));
			}
			valor.setLista(lista);
		}
		List<Valor> lstValor=genericoNegocio.buscarValores(valor);
		cargarValores(lstValor);
	}
	
	public void modalEliminar(Object objectRegistro,String tipoRegistro){		
		modalEliminar=new Window("Eliminar");
		ConfirmacionEliminarUI confirmacionEliminarUI=new ConfirmacionEliminarUI(this,objectRegistro,tipoRegistro);
		modalEliminar.setContent(confirmacionEliminarUI);
		modalEliminar.center();
		modalEliminar.setModal(true);
		modalEliminar.setDraggable(false);
		modalEliminar.setClosable(true);
		modalEliminar.setResizable(false);
		modalEliminar.setCloseShortcut(KeyCode.ESCAPE, null);
		getApplication().getMainWindow().addWindow(modalEliminar);
	}
	
	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("100%");
		mainLayout.setHeight("-1px");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("100.0%");
		setHeight("-1px");
		
		// pnlListaContenido
		pnlListaContenido = buildPnlListaContenido();
		mainLayout.addComponent(pnlListaContenido);
		
		// pnlValorContenido
		pnlValorContenido = buildPnlValorContenido();
		mainLayout.addComponent(pnlValorContenido);
		
		return mainLayout;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlListaContenido() {
		// common part: create layout
		pnlListaContenido = new HorizontalLayout();
		pnlListaContenido.setImmediate(false);
		pnlListaContenido.setWidth("870px");
		pnlListaContenido.setHeight("-1px");
		pnlListaContenido.setMargin(false);
		
		// panel_1
		panel_1 = buildPanel_1();
		pnlListaContenido.addComponent(panel_1);
		
		// pnlGrabarLista
		pnlGrabarLista = buildPnlGrabarLista();
		pnlListaContenido.addComponent(pnlGrabarLista);
		
		return pnlListaContenido;
	}

	@AutoGenerated
	private Panel buildPanel_1() {
		// common part: create layout
		panel_1 = new Panel();
		panel_1.setImmediate(false);
		panel_1.setWidth("520px");
		panel_1.setHeight("-1px");
		
		// verticalLayout_2
		verticalLayout_2 = buildVerticalLayout_2();
		panel_1.setContent(verticalLayout_2);
		
		return panel_1;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_2() {
		// common part: create layout
		verticalLayout_2 = new VerticalLayout();
		verticalLayout_2.setImmediate(false);
		verticalLayout_2.setWidth("100.0%");
		verticalLayout_2.setHeight("100.0%");
		verticalLayout_2.setMargin(false);
		
		// pnlListas
		pnlListas = buildPnlListas();
		verticalLayout_2.addComponent(pnlListas);
		
		return verticalLayout_2;
	}

	@AutoGenerated
	private VerticalLayout buildPnlListas() {
		// common part: create layout
		pnlListas = new VerticalLayout();
		pnlListas.setImmediate(false);
		pnlListas.setWidth("520px");
		pnlListas.setHeight("-1px");
		pnlListas.setMargin(false);
		
		// lblListas
		lblListas = new Label();
		lblListas.setImmediate(false);
		lblListas.setWidth("100.0%");
		lblListas.setHeight("-1px");
		lblListas.setValue("Consulta Listas");
		pnlListas.addComponent(lblListas);
		
		// tblListas
		tblListas = new TablaFiltro();
		tblListas.setImmediate(false);
		tblListas.setWidth("500px");
		tblListas.setHeight("160px");
		pnlListas.addComponent(tblListas);
		
		return pnlListas;
	}

	@AutoGenerated
	private VerticalLayout buildPnlGrabarLista() {
		// common part: create layout
		pnlGrabarLista = new VerticalLayout();
		pnlGrabarLista.setImmediate(false);
		pnlGrabarLista.setWidth("350px");
		pnlGrabarLista.setHeight("-1px");
		pnlGrabarLista.setMargin(false);
		
		// lblGrabarLista
		lblGrabarLista = new Label();
		lblGrabarLista.setImmediate(false);
		lblGrabarLista.setWidth("100.0%");
		lblGrabarLista.setHeight("-1px");
		lblGrabarLista.setValue("Grabar Lista");
		pnlGrabarLista.addComponent(lblGrabarLista);
		
		// pnlListaFila1
		pnlListaFila1 = buildPnlListaFila1();
		pnlGrabarLista.addComponent(pnlListaFila1);
		
		// pnlListaFila2
		pnlListaFila2 = buildPnlListaFila2();
		pnlGrabarLista.addComponent(pnlListaFila2);
		
		// pnlListaFila3
		pnlListaFila3 = buildPnlListaFila3();
		pnlGrabarLista.addComponent(pnlListaFila3);
		
		// pnlListaFila4
		pnlListaFila4 = buildPnlListaFila4();
		pnlGrabarLista.addComponent(pnlListaFila4);
		pnlGrabarLista.setComponentAlignment(pnlListaFila4, new Alignment(20));
		
		return pnlGrabarLista;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlListaFila1() {
		// common part: create layout
		pnlListaFila1 = new HorizontalLayout();
		pnlListaFila1.setImmediate(false);
		pnlListaFila1.setWidth("-1px");
		pnlListaFila1.setHeight("-1px");
		pnlListaFila1.setMargin(false);
		pnlListaFila1.setSpacing(true);
		
		// txtCodigoLista
		txtCodigoLista = new TextField();
		txtCodigoLista.setStyleName("fieldRequired");
		txtCodigoLista.setImmediate(false);
		txtCodigoLista.setWidth("150px");
		txtCodigoLista.setHeight("-1px");
		txtCodigoLista.setInputPrompt("Código");
		pnlListaFila1.addComponent(txtCodigoLista);
		
		// cbmEstadoLista
		cbmEstadoLista = new ComboBox();
		cbmEstadoLista.setImmediate(false);
		cbmEstadoLista.setWidth("160px");
		cbmEstadoLista.setHeight("-1px");
		pnlListaFila1.addComponent(cbmEstadoLista);
		
		// txtIdLista
		txtIdLista = new TextField();
		txtIdLista.setEnabled(false);
		txtIdLista.setImmediate(false);
		txtIdLista.setVisible(false);
		txtIdLista.setWidth("30px");
		txtIdLista.setHeight("-1px");
		pnlListaFila1.addComponent(txtIdLista);
		
		return pnlListaFila1;
	}

	@AutoGenerated
	private VerticalLayout buildPnlListaFila2() {
		// common part: create layout
		pnlListaFila2 = new VerticalLayout();
		pnlListaFila2.setCaption(" ");
		pnlListaFila2.setImmediate(false);
		pnlListaFila2.setWidth("-1px");
		pnlListaFila2.setHeight("-1px");
		pnlListaFila2.setMargin(false);
		
		// txtNombreLista
		txtNombreLista = new TextField();
		txtNombreLista.setStyleName("fieldRequired");
		txtNombreLista.setImmediate(false);
		txtNombreLista.setWidth("320px");
		txtNombreLista.setHeight("-1px");
		txtNombreLista.setInputPrompt("Nombre");
		pnlListaFila2.addComponent(txtNombreLista);
		
		return pnlListaFila2;
	}

	@AutoGenerated
	private VerticalLayout buildPnlListaFila3() {
		// common part: create layout
		pnlListaFila3 = new VerticalLayout();
		pnlListaFila3.setCaption(" ");
		pnlListaFila3.setImmediate(false);
		pnlListaFila3.setWidth("-1px");
		pnlListaFila3.setHeight("-1px");
		pnlListaFila3.setMargin(false);
		
		// txtDescripcionLista
		txtDescripcionLista = new TextField();
		txtDescripcionLista.setImmediate(false);
		txtDescripcionLista.setWidth("320px");
		txtDescripcionLista.setHeight("-1px");
		txtDescripcionLista.setInputPrompt("Descripción");
		pnlListaFila3.addComponent(txtDescripcionLista);
		
		return pnlListaFila3;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlListaFila4() {
		// common part: create layout
		pnlListaFila4 = new HorizontalLayout();
		pnlListaFila4.setCaption(" ");
		pnlListaFila4.setImmediate(false);
		pnlListaFila4.setWidth("-1px");
		pnlListaFila4.setHeight("-1px");
		pnlListaFila4.setMargin(false);
		pnlListaFila4.setSpacing(true);
		
		// btnGrabarLista
		btnGrabarLista = new Button();
		btnGrabarLista.setCaption("Actualizar");
		btnGrabarLista.setImmediate(true);
		btnGrabarLista.setWidth("90px");
		btnGrabarLista.setHeight("-1px");
		pnlListaFila4.addComponent(btnGrabarLista);
		pnlListaFila4.setComponentAlignment(btnGrabarLista, new Alignment(20));
		
		// btnEliminarLista
		btnEliminarLista = new Button();
		btnEliminarLista.setCaption("Eliminar");
		btnEliminarLista.setImmediate(true);
		btnEliminarLista.setWidth("90px");
		btnEliminarLista.setHeight("-1px");
		pnlListaFila4.addComponent(btnEliminarLista);
		pnlListaFila4
				.setComponentAlignment(btnEliminarLista, new Alignment(20));
		
		return pnlListaFila4;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorContenido() {
		// common part: create layout
		pnlValorContenido = new HorizontalLayout();
		pnlValorContenido.setImmediate(false);
		pnlValorContenido.setWidth("870px");
		pnlValorContenido.setHeight("-1px");
		pnlValorContenido.setMargin(false);
		
		// panel_2
		panel_2 = buildPanel_2();
		pnlValorContenido.addComponent(panel_2);
		
		// pnlGrabarValor
		pnlGrabarValor = buildPnlGrabarValor();
		pnlValorContenido.addComponent(pnlGrabarValor);
		
		return pnlValorContenido;
	}

	@AutoGenerated
	private Panel buildPanel_2() {
		// common part: create layout
		panel_2 = new Panel();
		panel_2.setImmediate(false);
		panel_2.setWidth("520px");
		panel_2.setHeight("-1px");
		
		// verticalLayout_3
		verticalLayout_3 = buildVerticalLayout_3();
		panel_2.setContent(verticalLayout_3);
		
		return panel_2;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_3() {
		// common part: create layout
		verticalLayout_3 = new VerticalLayout();
		verticalLayout_3.setImmediate(false);
		verticalLayout_3.setWidth("100.0%");
		verticalLayout_3.setHeight("100.0%");
		verticalLayout_3.setMargin(false);
		
		// pnlValores
		pnlValores = buildPnlValores();
		verticalLayout_3.addComponent(pnlValores);
		
		return verticalLayout_3;
	}

	@AutoGenerated
	private VerticalLayout buildPnlValores() {
		// common part: create layout
		pnlValores = new VerticalLayout();
		pnlValores.setImmediate(false);
		pnlValores.setWidth("520px");
		pnlValores.setHeight("-1px");
		pnlValores.setMargin(false);
		
		// lblValores
		lblValores = new Label();
		lblValores.setImmediate(false);
		lblValores.setWidth("100.0%");
		lblValores.setHeight("-1px");
		lblValores.setValue("Lista Valores origen");
		pnlValores.addComponent(lblValores);
		
		// tblValores
		tblValores = new TablaFiltro();
		tblValores.setImmediate(false);
		tblValores.setWidth("500px");
		tblValores.setHeight("160px");
		pnlValores.addComponent(tblValores);
		
		return pnlValores;
	}

	@AutoGenerated
	private VerticalLayout buildPnlGrabarValor() {
		// common part: create layout
		pnlGrabarValor = new VerticalLayout();
		pnlGrabarValor.setImmediate(false);
		pnlGrabarValor.setWidth("350px");
		pnlGrabarValor.setHeight("-1px");
		pnlGrabarValor.setMargin(false);
		
		// lblGrabarValor
		lblGrabarValor = new Label();
		lblGrabarValor.setImmediate(false);
		lblGrabarValor.setWidth("100.0%");
		lblGrabarValor.setHeight("-1px");
		lblGrabarValor.setValue("Grabar Valor");
		pnlGrabarValor.addComponent(lblGrabarValor);
		
		// pnlValorFila1
		pnlValorFila1 = buildPnlValorFila1();
		pnlGrabarValor.addComponent(pnlValorFila1);
		
		// pnlValorFila2
		pnlValorFila2 = buildPnlValorFila2();
		pnlGrabarValor.addComponent(pnlValorFila2);
		
		// pnlValorFila3
		pnlValorFila3 = buildPnlValorFila3();
		pnlGrabarValor.addComponent(pnlValorFila3);
		
		// pnlValorFila4
		pnlValorFila4 = buildPnlValorFila4();
		pnlGrabarValor.addComponent(pnlValorFila4);
		
		// pnlValorFila5
		pnlValorFila5 = buildPnlValorFila5();
		pnlGrabarValor.addComponent(pnlValorFila5);
		pnlGrabarValor.setComponentAlignment(pnlValorFila5, new Alignment(20));
		
		return pnlGrabarValor;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorFila1() {
		// common part: create layout
		pnlValorFila1 = new HorizontalLayout();
		pnlValorFila1.setImmediate(false);
		pnlValorFila1.setWidth("-1px");
		pnlValorFila1.setHeight("-1px");
		pnlValorFila1.setMargin(false);
		
		// cboLista
		cboLista = new ComboBox();
		cboLista.setImmediate(false);
		cboLista.setWidth("320px");
		cboLista.setHeight("-1px");
		pnlValorFila1.addComponent(cboLista);
		
		return pnlValorFila1;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorFila2() {
		// common part: create layout
		pnlValorFila2 = new HorizontalLayout();
		pnlValorFila2.setCaption(" ");
		pnlValorFila2.setImmediate(false);
		pnlValorFila2.setWidth("-1px");
		pnlValorFila2.setHeight("-1px");
		pnlValorFila2.setMargin(false);
		pnlValorFila2.setSpacing(true);
		
		// txtCodigoValor
		txtCodigoValor = new TextField();
		txtCodigoValor.setStyleName("fieldRequired");
		txtCodigoValor.setImmediate(false);
		txtCodigoValor.setWidth("150px");
		txtCodigoValor.setHeight("-1px");
		txtCodigoValor.setInputPrompt("Código");
		pnlValorFila2.addComponent(txtCodigoValor);
		
		// cboEstadoValor
		cboEstadoValor = new ComboBox();
		cboEstadoValor.setImmediate(false);
		cboEstadoValor.setWidth("160px");
		cboEstadoValor.setHeight("-1px");
		pnlValorFila2.addComponent(cboEstadoValor);
		
		// txtIdValor
		txtIdValor = new TextField();
		txtIdValor.setEnabled(false);
		txtIdValor.setImmediate(false);
		txtIdValor.setVisible(false);
		txtIdValor.setWidth("30px");
		txtIdValor.setHeight("-1px");
		pnlValorFila2.addComponent(txtIdValor);
		
		return pnlValorFila2;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorFila3() {
		// common part: create layout
		pnlValorFila3 = new HorizontalLayout();
		pnlValorFila3.setCaption(" ");
		pnlValorFila3.setImmediate(false);
		pnlValorFila3.setWidth("-1px");
		pnlValorFila3.setHeight("-1px");
		pnlValorFila3.setMargin(false);
		pnlValorFila3.setSpacing(true);
		
		// txtNombreValor
		txtNombreValor = new TextField();
		txtNombreValor.setStyleName("fieldRequired");
		txtNombreValor.setImmediate(false);
		txtNombreValor.setWidth("200px");
		txtNombreValor.setHeight("-1px");
		txtNombreValor.setInputPrompt("Nombre");
		pnlValorFila3.addComponent(txtNombreValor);
		pnlValorFila3.setExpandRatio(txtNombreValor, 1.0f);
		
		// txtOrdenValor
		txtOrdenValor = new TextField();
		txtOrdenValor.setImmediate(false);
		txtOrdenValor.setWidth("115px");
		txtOrdenValor.setHeight("-1px");
		txtOrdenValor.setInputPrompt("Orden");
		pnlValorFila3.addComponent(txtOrdenValor);
		
		return pnlValorFila3;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorFila4() {
		// common part: create layout
		pnlValorFila4 = new HorizontalLayout();
		pnlValorFila4.setCaption(" ");
		pnlValorFila4.setImmediate(false);
		pnlValorFila4.setWidth("-1px");
		pnlValorFila4.setHeight("-1px");
		pnlValorFila4.setMargin(false);
		
		// txtDescripcionValor
		txtDescripcionValor = new TextField();
		txtDescripcionValor.setImmediate(false);
		txtDescripcionValor.setWidth("320px");
		txtDescripcionValor.setHeight("-1px");
		txtDescripcionValor.setInputPrompt("Descripción");
		pnlValorFila4.addComponent(txtDescripcionValor);
		pnlValorFila4.setExpandRatio(txtDescripcionValor, 1.0f);
		
		return pnlValorFila4;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlValorFila5() {
		// common part: create layout
		pnlValorFila5 = new HorizontalLayout();
		pnlValorFila5.setCaption(" ");
		pnlValorFila5.setImmediate(false);
		pnlValorFila5.setWidth("-1px");
		pnlValorFila5.setHeight("-1px");
		pnlValorFila5.setMargin(false);
		pnlValorFila5.setSpacing(true);
		
		// btnGrabarValor
		btnGrabarValor = new Button();
		btnGrabarValor.setCaption("Actualizar");
		btnGrabarValor.setImmediate(true);
		btnGrabarValor.setWidth("90px");
		btnGrabarValor.setHeight("-1px");
		pnlValorFila5.addComponent(btnGrabarValor);
		pnlValorFila5.setComponentAlignment(btnGrabarValor, new Alignment(20));
		
		// btnEliminarValor
		btnEliminarValor = new Button();
		btnEliminarValor.setCaption("Eliminar");
		btnEliminarValor.setImmediate(true);
		btnEliminarValor.setWidth("90px");
		btnEliminarValor.setHeight("-1px");
		pnlValorFila5.addComponent(btnEliminarValor);
		pnlValorFila5
				.setComponentAlignment(btnEliminarValor, new Alignment(20));
		
		return pnlValorFila5;
	}
}
